package com.example.web.client;

import com.example.model.domain.Article;
import com.example.model.domain.Comment;
import com.example.service.IArticleService;
import com.example.service.ICommentService;
import com.example.service.ISiteService;
import com.github.pagehelper.PageInfo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.servlet.http.HttpServletRequest;
import java.util.List;


@Controller
public class IndexController {
    private static final Logger logger = LoggerFactory.getLogger(IndexController.class);
    @Autowired
    private IArticleService articleServiceImpl;
    @Autowired
    private ICommentService commentServiceImpl;
    @Autowired
    private ISiteService siteServiceImpl;
    //博客首页，会自动跳转到文章页
    @GetMapping(value = "/")
    private String index(HttpServletRequest request){
        return this.index(request,1,5);
    }
    //文章页
    @GetMapping(value="/page/{p}")
    public String index(HttpServletRequest request, @PathVariable("p") int page, @RequestParam(value = "count",defaultValue = "5")int count){
        PageInfo<Article> articles = articleServiceImpl.selectArticleWithPage(page,count);
        //获取文章热度统计
        List<Article> articleList=articleServiceImpl.getHeatArticles();
        request.setAttribute("articles",articles);
        request.setAttribute("articleList",articleList);
        logger.info("分页获取文章信息：页码 "+page+",条数"+count);
        return "client/index";
    }
    //文章详情查询
    @GetMapping(value="/article/{id}")
    public String getArticleById(@PathVariable("id") Integer id,HttpServletRequest request){
        Article article= articleServiceImpl.selectArticleWithId(id);
        if(article!=null){
            //查询封装评论相关数据
            getArticleComments(request,article);
            //更新文章点击量
            siteServiceImpl.updateStatistics(article);
            request.setAttribute("article",article);
            return "client/articleDetails";
        }else{
            logger.warn("查询文章详情内容位空,查询文章ID："+id);
            //未找到对应文章，跳转到提示页
            return "comm/error_404";
        }
    }
    //查询文章的评论信息，并补充到文章详情里
    private void getArticleComments(HttpServletRequest request,Article article){
        if(article.getAllowComment()){
            String cp =request.getParameter("cp");
            cp= StringUtils.isBlank(cp) ? "1" : cp;
            request.setAttribute("cp",cp);
            PageInfo<Comment> comments=commentServiceImpl.getComments(article.getId(),Integer.parseInt(cp),3);
            request.setAttribute("cp",cp);
            request.setAttribute("comments",comments);
        }
    }
}